/**
 * 内存管理系统初始化前期的内存分配工具的结构体定义。
 */
#ifndef _AHAMOLETT_EARLY_ALLOC_TYPES_H_
#define _AHAMOLETT_EARLY_ALLOC_TYPES_H_

#include <cds/cds_types.h>

/* 表示负责某一个内存区域的前期内存分配器的结构体。 */
struct early_allocator {
    /* 表示当前区域内存页的信息 */
    unsigned long page_start;   /// 属于该区域的第一个内存页页号。
    unsigned long pages_num;    /// 该区域总共的内存页数量。
    unsigned long next_page_offset; /// 下一次进行分配的页号相对区域内首个页号的偏移。
                                    /// 暂时没用到

    /* 用于分配小于一个内存页大小的内存块。 */
    unsigned long next_alloc_addr;  /// 下次从该地址开始分配小内存块。
    unsigned long next_block_end;   /// 下次分配小内存块时不应超过该地址。
    
    /* 描述当前区域内内存页分配状况的位图。 */
    struct bitmap bitmap;
};

#endif
